<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<body onload="onPageLoad()">
<p>Test of Range.createContextualFragment() with in-scope namespace prefixes, where the XML fragment introduces additional namespace prefixes. If the test succeeds you will see the word "PASS" below.</p>
<p id="result">Running test...</p>
<svg:svg xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <svg:defs id="defs"/>
</svg:svg>
<script type="text/javascript">//<![CDATA[
function onPageLoad() {
    if (window.testRunner)
        testRunner.dumpAsText();

    var result = document.getElementById("result");

    var defs = document.getElementById("defs"),
        range = document.createRange(),
        docFragment;

    range.setStart(defs, 0);
    docFragment = range.createContextualFragment("<svg:linearGradient id='gradient1'/>" +
                                                 "<a:aTest id='aTest' xmlns:a='urn:x-test:a' xmlns:b='urn:x-test:b' a:aAttr='aValue' xlink:href='#gradient1'>" +
                                                 "  <b:bTest id='bTest' a:aAttr='aValue2' b:bAttr='bValue'>" +
                                                 "    <xlink:testRedefiningXlink id='testRedefiningXlink' xlink:xlinkAttr='xlinkValue' xmlns:xlink='urn:x-test:xlink'/>" +
                                                 "    <svg:linearGradient id='gradient2' xlink:href='#gradient1'/>" +
                                                 "  </b:bTest>" +
                                                 "</a:aTest>");
    defs.appendChild(docFragment);

    var gradient1 = document.getElementById("gradient1");
    if (gradient1.namespaceURI != "http://www.w3.org/2000/svg") {
        result.textContent += ' - #gradient1 has the wrong namespaceURI';
        return;
    }

    var aTest = document.getElementById("aTest");
    if (aTest.namespaceURI != "urn:x-test:a") {
        result.textContent += ' - #aTest has the wrong namespaceURI';
        return;
    }
    if (aTest.getAttributeNS("urn:x-test:a", "aAttr") != "aValue") {
        result.textContent += ' - wrong value for the a:aAttr attribute of #aTest';
        return;
    }
    if (aTest.getAttributeNS("http://www.w3.org/1999/xlink", "href") != "#gradient1") {
        result.textContent += ' - wrong value for the xlink:href attribute of #aTest';
        return;
    }

    var bTest = document.getElementById("bTest");
    if (bTest.namespaceURI != "urn:x-test:b") {
        result.textContent += ' - #bTest has the wrong namespaceURI';
        return;
    }
    if (bTest.getAttributeNS("urn:x-test:a", "aAttr") != "aValue2") {
        result.textContent += ' - wrong value for the a:aAttr attribute of #bTest';
        return;
    }
    if (bTest.getAttributeNS("urn:x-test:b", "bAttr") != "bValue") {
        result.textContent += ' - wrong value for the b:bAttr attribute of #bTest';
        return;
    }

    var testRedefiningXlink = document.getElementById("testRedefiningXlink");
    if (testRedefiningXlink.namespaceURI != "urn:x-test:xlink") {
        result.textContent += ' - #testRedefiningXlink has the wrong namespaceURI';
        return;
    }
    if (testRedefiningXlink.getAttributeNS("urn:x-test:xlink", "xlinkAttr") != "xlinkValue") {
        result.textContent += ' - wrong value for the xlink:xlinkAttr attribute of #testRedefiningXlink';
        return;
    }

    var gradient2 = document.getElementById("gradient2");
    if (gradient2.namespaceURI != "http://www.w3.org/2000/svg") {
        result.textContent += ' - #gradient2 has the wrong namespaceURI';
        return;
    }
    if (gradient2.getAttributeNS("http://www.w3.org/1999/xlink", "href") != "#gradient1") {
        result.textContent += ' - wrong value for the xlink:href attribute of #gradient2';
        return;
    }

    if (result.textContent === "Running test...")
        result.textContent = "PASS";
}
//]]>
</script>
</body>
</html>
